package com.ruoyi.teacher.service.impl;

import java.util.List;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.teacher.domain.MyTask;
import com.ruoyi.teacher.domain.Task;
import com.ruoyi.teacher.mapper.MyTaskMapper;
import com.ruoyi.teacher.mapper.TaskMapper;
import com.ruoyi.teacher.service.IMyTaskService;
import com.ruoyi.teacher.vo.MyTaskVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


/**
 * 我的任务Service业务层处理
 *
 * @author TengZeng
 * @date 2023-05-18
 */
@Service
public class MyTaskServiceImpl implements IMyTaskService {
    @Autowired
    private MyTaskMapper myTaskMapper;

    @Autowired
    private TaskMapper taskMapper;

    /**
     * 查询我的任务
     *
     * @param id 我的任务主键
     * @return 我的任务
     */
    @Override
    public MyTask selectMyTaskById(Long id) {
        return myTaskMapper.selectMyTaskById(id);
    }

    /**
     * 查询我的任务列表
     *
     * @param myTask 我的任务
     * @return 我的任务
     */
    @Override
    public List<MyTask> selectMyTaskList(MyTask myTask) {
        return myTaskMapper.selectMyTaskList(myTask);
    }

    /**
     * 新增我的任务
     *
     * @param myTask 我的任务
     * @return 结果
     */
    @Override
    public int insertMyTask(MyTask myTask) {
        myTask.setCreateTime(DateUtils.getNowDate());
        return myTaskMapper.insertMyTask(myTask);
    }

    /**
     * 修改我的任务
     *
     * @param myTask 我的任务
     * @return 结果
     */
    @Override
    public int updateMyTask(MyTask myTask) {
        return myTaskMapper.updateMyTask(myTask);
    }

    /**
     * 批量删除我的任务
     *
     * @param ids 需要删除的我的任务主键
     * @return 结果
     */
    @Override
    public int deleteMyTaskByIds(Long[] ids) {



        return myTaskMapper.deleteMyTaskByIds(ids);
    }

    /**
     * 删除我的任务信息
     *
     * 如果任务已完成 删除我的任务同时删除任务中心任务
     * @param vo
     * @return 结果
     */
    @Override
    public int deleteMyTaskById(MyTaskVo vo) {
        MyTask myTask = myTaskMapper.selectMyTaskById(vo.getId());
        if(myTask.getFinish() == 1){
            taskMapper.deleteTaskById(myTask.getTaskId());
            return myTaskMapper.deleteMyTaskById(vo.getId());
        }
        return myTaskMapper.deleteMyTaskById(vo.getId());
    }

    /**
     * 添加完成
     *
     * @param vo
     * @return
     */
    @Override
    public int toFinish(MyTaskVo vo) {
        try {
            MyTask myTask = new MyTask();
            BeanUtils.copyProperties(vo, myTask);
            myTask.setFinish(1);
            myTaskMapper.updateMyTask(myTask);
        } catch (Exception e) {
            e.printStackTrace();
            return -1;
        }
        return 1;
    }
}
